package com.zj.study.date;

import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.NonNull;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 赵赳
 * @since: 2021/8/13 9:34
 * @desc:
 */
@Slf4j
public class DateUtils {

    /**
     * 判断输入时间是否已过期
     *
     * @param time 输入时间 类型 String  格式 yyyy-MM-dd HH:mm:ss
     * @return 是否过期 过期为true 未过期为false
     */
    public static Boolean timeHasExpired(@NonNull String time) {

        if(checkTime(time,getTime())){
            System.out.println("当前时间已过期");
            return true;
        }else {
            System.out.println("当前时间未过期");
            return false;
        }
    }

    /**
     * <p>检查输入时间是否在当前时间之后,在当前时间之前（已过期），之后（未过期）<p/>
     *
     * @param time 输入时间
     * @param newDate 当前时间
     * @return 是否过期
     */
    private static boolean checkTime(String time, String newDate) {
        log.info("输入时间为：{},当前时间为：{}",time,newDate);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d1;
        Date d2;
        try {
            d1 = format.parse(time);
            d2 = format.parse(newDate);
            return d2.after(d1);
        } catch (ParseException e) {
            log.error("转换时间出现异常，异常信息为：{}", e.getMessage());
        }
        return false;
    }

    /**
     * 获取当前时间
     *
     * @return 当前时间
     */
    private static String getTime(){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        return format.format(date);
    }

}
